
--------------------------------------------------------------------------------

   StringGrid / DBGrid.
: Alex Schlecht

StringGrids / DBGrids      ,          Grid.

:   Delphi

 ,         StringGrids   DBGrids.        StringGrid: 


1. StringGrid 
============= 
     "OnDrawCell".   ,    Grid  .     . 


procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; 
  Rect: TRect; State: TGridDrawState); 

Const   //   .     
        //  . 
  clPaleGreen = TColor($CCFFCC); 
  clPaleRed =   TColor($CCCCFF); 

begin 

//   ,        
if (gdFocused in State) then begin     
   StringGrid1.Canvas.Brush.Color := clBlack; 
   StringGrid1.Canvas.Font.Color := clWhite; 
end 
else  //    ,       

   if ACol = 2   //    ,  -   
    then StringGrid1.Canvas.Brush.color := clPaleGreen 
    else StringGrid1.canvas.brush.Color := clPaleRed; 

//  ,  ,    Title- Row/Column 
//    ,    title-Row/Columns  . 

If (ACol > 0) and (ARow>0) then 
  begin 
      //  
    StringGrid1.canvas.fillRect(Rect); 

      //  (Text).       ... 
    StringGrid1.canvas.TextOut(Rect.Left,Rect.Top,StringGrid1.Cells[ACol,ARow]); 
  end; 
end; 



            ,    3  (if Acol = 2 ......)  -   

  if StringGrid1.Cells[ACol,ARow] = 'highlight it' 
    then StringGrid1.Canvas.Brush.color := clPalered 
    else StringGrid1.canvas.brush.Color := clwhite; 



     DBGrids: 

2. DBGrid 
========= 
 DBGrids    .      "OnDrawColumnCell".      "Status"     "a". 
     ,     "If..." ( ) 



procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; 
                                       DataCol: Integer; Column: TColumn; 
                                       State: TGridDrawState); 
const 
  clPaleGreen = TColor($CCFFCC); 
  clPaleRed =   TColor($CCCCFF); 
begin 

If Column.FieldName = 'Status' then  //  ,      

If Column.Field.Dataset.FieldbyName('Status').AsString <> 'a' 
  then 
   If (gdFocused in State) //   ? 
    then dbgrid1.canvas.brush.color := clBlack          // 
    else dbgrid1.canvas.brush.color := clPaleGreen;  //  

//      : 
dbgrid1.DefaultDrawColumnCell(rect,DataCol,Column,State) 
end; 


 
